package com.note.feng.leetcode.algorithms.easy.three;

public class ThreeHundredTwentySix {

    /**
     * 326 3的幂
     * 给定一个整数，写一个函数来判断它是否是 3 的幂次方。如果是，返回 true ；否则，返回 false 。
     *
     * 整数 n 是 3 的幂次方需满足：存在整数 x 使得 n == 3x
     *
     * 示例 1：
     *
     * 输入：n = 27
     * 输出：true
     * 示例 2：
     *
     * 输入：n = 0
     * 输出：false
     * 示例 3：
     *
     * 输入：n = 9
     * 输出：true
     * 示例 4：
     *
     * 输入：n = 45
     * 输出：false
     *
     * 提示：
     *
     * -231 <= n <= 231 - 1
     *
     * 进阶：你能不使用循环或者递归来完成本题吗？
     *
     * 来源：力扣（LeetCode）
     * 链接：https://leetcode.cn/problems/power-of-three
     */
    /**
     * 解法：迭代
     * 当n小于等于0 时，一定不是3的幂，直接返回false
     * 否则，若n不等于0并且取余3等于0，n等于n除以3，
     * 遍历结束，返回n==1
     * @param n
     * @return
     */
    public boolean isPowerOfThree(int n) {
        if(n <= 0){
            return false;
        }
        while (n != 0 && n % 3 == 0){
            n /= 3;
        }
        return n == 1;
    }
}
